home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / SourceCode / AdobeExamples / NX_ImportAdv / ResourcePanel.m < prev    next >
Text File  |  1992-12-19  |  4KB  |  189 lines

  1.  
  2. /*
  3.  * (a)  (C) 1990 by Adobe Systems Incorporated. All rights reserved.
  4.  *
  5.  * (b)  If this Sample Code is distributed as part of the Display PostScript
  6.  *    System Software Development Kit from Adobe Systems Incorporated,
  7.  *    then this copy is designated as Development Software and its use is
  8.  *    subject to the terms of the License Agreement attached to such Kit.
  9.  *
  10.  * (c)  If this Sample Code is distributed independently, then the following
  11.  *    terms apply:
  12.  *
  13.  * (d)  This file may be freely copied and redistributed as long as:
  14.  *    1) Parts (a), (d), (e) and (f) continue to be included in the file,
  15.  *    2) If the file has been modified in any way, a notice of such
  16.  *      modification is conspicuously indicated.
  17.  *
  18.  * (e)  PostScript, Display PostScript, and Adobe are registered trademarks of
  19.  *    Adobe Systems Incorporated.
  20.  * 
  21.  * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
  22.  *    CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
  23.  *    AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
  24.  *    ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
  25.  *    OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
  26.  *    WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
  27.  *    WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
  28.  *    DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
  29.  *    FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
  30.  *    OF THIRD PARTY RIGHTS.
  31.  */
  32.  
  33. /*
  34.  *    ResourcePanel.m
  35.  *
  36.  *    This panel displays the unavailable resources.
  37.  *
  38.  *    Version:    2.0
  39.  *    Author:    Ken Fromm
  40.  *    History:
  41.  *            03-07-91        Added this comment.
  42.  */
  43.  
  44. #import "ResourcePanel.h"
  45.  
  46. #import <appkit/Application.h>
  47. #import <appkit/NXBrowser.h>
  48. #import <appkit/NXBrowserCell.h>
  49. #import <appkit/Matrix.h>
  50.  
  51. #import <objc/List.h>
  52. #import <strings.h>
  53.  
  54. @implementation ResourcePanel
  55.  
  56. - setTypeBrowser:anObject
  57. {
  58.     typeBrowser = anObject;
  59.  
  60.     [typeBrowser  useScrollBars:NO];
  61.     [typeBrowser  setDelegate:self];
  62.     [typeBrowser  setTarget:self];
  63.     [typeBrowser  setAction:@selector(browserAction:)];
  64.  
  65.     return self;
  66. }
  67.  
  68. - setFileBrowser:anObject
  69. {
  70.     fileBrowser = anObject;
  71.  
  72.     [fileBrowser  setDelegate:self];
  73.  
  74.     return self;
  75. }
  76.  
  77. - browserAction:sender
  78. {
  79.     [fileBrowser  reloadColumn:0];
  80.  
  81.     return self;
  82. }
  83.  
  84. - (int) runModalWithList:(ResourceList *) aList
  85. {
  86.     return [self  runModalWithList:aList  andName:NULL];
  87. }
  88.  
  89. - (int) runModalWithList:(ResourceList *) aList  andName:(NXAtom) name
  90. {
  91.     int        result;
  92.  
  93.     const char    *filename;
  94.  
  95.     list = aList;
  96.  
  97.     if (name)
  98.     {
  99.         filename = strrchr(name, '/');
  100.         if (filename)
  101.             filename++;
  102.         else
  103.             filename = name;
  104.         [nameField  setStringValue:filename];
  105.     }
  106.     else
  107.         [nameField  setStringValue:"<filename unavailable>"];
  108.         
  109.     [typeBrowser  reloadColumn:0];
  110.     [[typeBrowser  matrixInColumn:0]  selectCellAt:0 :0];
  111.     [fileBrowser  reloadColumn:0];
  112.  
  113.     [self  makeKeyAndOrderFront:self];
  114.     result = [NXApp runModalFor:self];
  115.     [self  orderOut:self];
  116.     list = NULL;
  117.  
  118.     return result;
  119. }
  120.  
  121. - endModal:sender
  122. {
  123.     [NXApp  stopModal:[sender  selectedTag]];
  124.  
  125.     return self;
  126. }
  127.  
  128. /*
  129. *    NXBrowser Delegate method.
  130. */
  131. - (int) browser:sender  fillMatrix:matrix  inColumn:(int) column
  132. {
  133.     id            cell;
  134.  
  135.     int            i, j, row, rows, count;
  136.  
  137.     const char    *type;
  138.  
  139.     rows = 0;
  140.     if (list)
  141.     {
  142.         if (sender == typeBrowser && column == 0)
  143.         {
  144.             for (i = 0; i < RES_NUMTYPES; i++)
  145.             {
  146.                 count = [list->types[i]  count];
  147.                 if (count)
  148.                 {
  149.                     type = GetTypeComment(i);
  150.                     [matrix  addRow];
  151.                     cell = [matrix  cellAt:rows++ :0];
  152.                     [cell  setStringValueNoCopy:type];
  153.                     [[cell  setLeaf:YES]  setLoaded:YES];
  154.                 }
  155.             }
  156.         }
  157.         else if (sender == fileBrowser && column == 0)
  158.         {
  159.             count = 0;
  160.             row = [[typeBrowser  matrixInColumn:0]  selectedRow];
  161.             for (i = 0; i < RES_NUMTYPES; i++)
  162.             {
  163.                 if (list->types[i])
  164.                 {
  165.                     if (count == row)
  166.                         break;
  167.                     count++;
  168.                 }
  169.             }
  170.  
  171.             if (i < RES_NUMTYPES)
  172.             {
  173.                 count = [list->types[i]  count];
  174.                 for (j = 0; j < count; j++)
  175.                 {
  176.                     [matrix  addRow];
  177.                     cell = [matrix  cellAt:rows++ :0];
  178.                     [cell  setStringValueNoCopy:(const char *) [list->types[i]  objectAt:j]];
  179.                     [[[cell  setLeaf:YES]  setLoaded:YES]  setSelectable:NO];
  180.                 }
  181.             }
  182.         }
  183.     }
  184.      
  185.     return rows;
  186. }
  187.  
  188. @end
  189.